Amazon QuickSight 前月比を確認できるテーブル(表)形式の作り方紹介
Amazon QuickSight で前月の値と比較するテーブル(表)形式を作成をするにはどうしたら良いのでしょうか?
以前、前年同月比を垂直棒グラフで可視化したことがあります。今回と同じ表示上の問題を抱えたのですが、垂直棒グラフのビジュアル側の設定で問題を回避しました。今回はテーブル(表)形式で表示上の問題を解決した方法を紹介します。
テーブル形式で前月の値と比較したい
前月の数値と、今月の数値を同じ行に表示し、数値の差分を表示できる表の作成を目指します。
サンプルデータとして AWS 利用費のデータを使ってテーブル作成し、QuickSight 初心者だと誰もが頭を抱える問題に触れます。
可視化に必要なデータの準備
私の環境を例に説明しますので基本となるmonth
とcost
フィールドを説明します。
month
フィールドは年月が格納されたフィールドcost
フィールドは AWS 利用費が格納されたフィールド
計算フィールドの作成
ビジュアルタイプはテーブル形式で過去 2 か月(month
)と、AWS 利用費(cost
)を表示しました。
なぜ 2 か月でフィルタするかというと計算フィールドを使って計算するために必要な対象月のデータをテーブルに持たせる必要があります。
periodOverPeriodLastValue
と、periodOverPeriodDifference
関数を利用して欲しいデータを持つ計算フィールドを作成します。
前月の値をそのまま表示できる関数
1 か月前のcost
の値をそのまま表示するだけのcost_last_mont_value
フィールドを作成します。periodOverPeriodLastValue
関数の仕様で集計した値である必要があったためsum()
でcost
を集計した値を引数としています。MONTH, 1
は 1 か月前の値を参照する指定です。
periodOverPeriodLastValue(sum(cost), month, MONTH, 1)
前月の値と今月の値の差額を計算して表示できる関数
近月と、その 1 か月前のcost
の値の差額を求めるcost_last_month_difference
フィールドを作成します。こちらも同様にperiodOverPeriodDifference
関数の仕様で集計した値である必要があったためsum()
でcost
を集計した値を引数としています。
periodOverPeriodDifference(sum(cost), month, MONTH, 1)
作成した計算フィールドを追加したテーブル
1 行に必要な値をまとめることができました。
ここまでくると計算のためだけに必要だった先月(12 月 2023)のデータ(行)が邪魔です。
month
のフィルタ条件を変更し直近 1 か月分にすると、計算に必要な先月(12 月分)のデータを参照できなくなり、表示したい数値が消えます。
不要な行を消すためにフィルタすると計算フィールドに必要だった値を参照できなく、1 つの行に必要だった数値を表示できなくなるジレンマを抱えました。
抱えた問題
テーブル形式の表示上、不要な月の行を消したいが不要な月でフィルタ設定すると計算もできなくなる。これが問題です。
垂直棒グラフで表示する場合は垂直棒グラフ側のビジュアルを調整し上手いこと回避できました。しかし、テーブル形式で同じ問題を回避する方法を見つけられていませんでした。
解決策
新たな日付フィールド作成し新しい列に表示して、その日付をフィルタすれば計算フィールドは計算できてかつ、計算のためだけに必要だった行を非表示にできます。
新たな日付を計算フィールドで生み出す
periodOverPeriodLastValue
と、periodOverPeriodDifference
関数内で使用したmonth
フィールドの日付の値を再利用して、新しい日付フィールドを作成します。日付を整えるとフィルタしやすそうなので日付の最小値を返すminOver
関数を使用しました。
minOver(min(month), [month])
フィールドを追加しました。2023/12/01 0:00
か2024/01/01 0:00
と表示された 2 つの値が表示されました。
追加したフィールドのフィルタを作成し、直近 1 か月分に絞り込みます。
すると、計算フィールドは計算できてかつ、不要な行を非表示にできます。
見た目を整える
フィルタのために作成した日付を表示する計算フィールドも表示しておく必要はないです。テーブル形式の機能で非表示にすると良いです。
あとは、列の入れ替え、列名に分かりやすい名前を付けると見やすい表になります。
おわりに
「こんな感じで可視化できれば分析に使えそうだなぁ、良し悪しは実物みて判断するかー」と思ってから実現するまでに、QuickSight 力を問われる場面がたびたび訪れます。